Hi ScreenSaver module developer! ================================ This is version 2.6 of the sample ScreenSaver module. Changes version 2.5 - > 2.6 --------------------------- Due to some problems that IBM built into the final release of Merlin, you now *must* use WinInitialize/WinTerminate in every thread that uses Gpi or Win calls. Changes version 2.4 - > 2.5 --------------------------- no changes. Changes version 2.4 - > 2.42 ---------------------------- Changed write_profile_data() to write to the specified ini file (older versions wrote their settings only if it was the OS2.INI file). Changes version 2.3 - > 2.4 --------------------------- Dimension of the push buttons in the module configuration dialog changed to fit needs of German version of ScreenSaver. Added #include on some developer's request. Changes version 2.2 - > 2.3 --------------------------- no changes. Changes version 2.1 - > 2.2 --------------------------- no changes. Changes version 2.0 - > 2.1 --------------------------- increased stack size to 64KB added exception handling in modules. a crashing module now only stops executing, keeping the ScreenSaver program alive. a register dump is written to file CRASH.LOG. If you use this exception handling code, please make sure that the resources which your drawing thread has allocated are freed. Changes version 1.5 - > 2.0 --------------------------- module name is now stored in the configuarton data (there were module crashes because of the "list box double entry" problem (2.0 has a workaround for this OS/2 bug)) the sample code to query the spin button allowed entry of invalid values. corrected. instead of WinGetPS(..) / WinReleasePS(..) I now create a normal PS which is much more flexible; code changed in WM_CREATE and WM_DESTROY. Changes version 1.4 - > 1.5 --------------------------- code added to read from an alternate INI file instead of OS2.INI: functions query_profile_data() and write_profile_data() FUNCTION_SETINIFILENAME in SAVER_PROC(...) code added to move saver window to top regularly (IDT_ZORDERTIMER) Changes version 1.3 - > 1.4 --------------------------- no changes. Changes version 1.2 - > 1.3 --------------------------- no changes. Changes version 1.1 - > 1.2 --------------------------- There is a problem with OS/2 2.11 (to me it seems to be an OS/2 bug) which causes ScreenSaver to exit whenever a version 1.1 module ends. This problem is corrected in version 1.2. Unfortunately the problem had to be corrected in the module source code. The problem only occurs when "low priority" is enabled. (To those who are interested: the DosKillThread call kills thread 1 (the main thread) instead of the priority-controller-thread. Seems to be a bad bug in OS/2 2.11). The ScreenSaver program now checks if we run on OS/2 2.11 and if the modules is a version 1.1 module. If this is true, it runs the module with high priority although low priority may be selected in the options dialog. Animation speed setting added. Random seed now per thread. *.DEF file changed Changes version 1.0 - > 1.1 --------------------------- There are some minor enhancements to the original code. There is limited support for compiling with Borland C++ now. See below for more info on that. The old (version 1.0) code STILL WORKS. The code that was added since version 1.0 should solve the idle-priority problem that prevented the saver modules from doing their action when CPU usage of other programs was 100%. Most of the changes are to avoid compiler warnings from Borland C++. It should not be too much work to incorporate the changes in SAMPLE.C if you have written code for version 1.0. I suggest you cut your code and paste it into the new SAMPLE.C. An utility like "Visual Compare" (all/diskutil/vc132.zip on ftp.cdrom.com) might be very useful for that. Compiling with Borland C++ -------------------------- Because of initialization problems with the Borland C runtime library (RTL), you MUST NOT use ANY RTL-functions (malloc, free, strcpy, _beginthread, srand, rand, fopen, open, printf etc.). In the file MINIRTL.C you can find some useful C library functions as source code. If you link your module with MINIRTL.OBJ, you can use those functions in your module. DO NOT use any other rtl functions. DO NOT link your module with one of the Borland libraries (C2*.LIB) (OS2.LIB is ok). DO NOT link with the startup code supplied by Borland (C02*.OBJ). Use the startup code BCCDLL0.ASM instead. This seems rather complicated, but in fact all you have to do is uncomment the "USE_BCC=1" line in SAMPLE.MAK and type "MAKE -F SAMPLE.MAK". ------------------------------------------------------ If you are going to write saver modules, please get in contact with me. I can put your modules on the ScreenSaver WWW page or incorporate a link to your WWW page. If you already have developed a module, please drop me a line where I can get it from. Better, uuencode the module and mail it to me. If your modules are available on the World Wide Web, please tell me the address and I will include a link to your page on the ScreenSaver home page (http://stud1.tuwien.ac.at/~e8925811/ssaver.html). If you have any questions, just contact me via e-mail. Greetings Siegfried Hanisch Internet addresses: ssaver@ibm.net (preferred; ScreenSaver related mail only) siggih@ibm.net